]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Fix showing small item previews
authorMarina Zhurakhinskaya <marinaz@redhat.com>
Wed, 29 Jul 2009 21:47:50 +0000 (17:47 -0400)
committerMarina Zhurakhinskaya <marinaz@redhat.com>
Wed, 29 Jul 2009 21:56:13 +0000 (17:56 -0400)
Don't use a clone of an actor that's not part of the scene graph for the
item previews. This patch fixes previews in the details pane for documents
for which we don't have full previews and for applications.

Use create_icon_texture() from AppInfo instead of looking up the file
for gicon when creating an application icon for the details pane.

js/ui/appDisplay.js
js/ui/docDisplay.js
js/ui/genericDisplay.js

index 25237693c9bcbf4bb252fb2f799aa1044fd3f504..a790e3fee1213f456698bbfcc3631ee1bad0327c 100644 (file)
@@ -68,29 +68,9 @@ AppDisplayItem.prototype = {
         return this._appInfo.create_icon_texture(GenericDisplay.ITEM_DISPLAY_ICON_SIZE);
     },
 
-    // Ensures the preview icon is created.
-    _ensurePreviewIconCreated : function() {
-        if (!this._showPreview || this._previewIcon)
-            return;
-
-        let gicon = this._appInfo.get_icon();
-        let previewIconPath = null;
-        if (gicon) {
-            let iconTheme = Gtk.IconTheme.get_default();
-            let previewIconInfo = iconTheme.lookup_by_gicon(gicon, GenericDisplay.PREVIEW_ICON_SIZE, 0);
-            if (previewIconInfo)
-                previewIconPath = previewIconInfo.get_filename();
-        }
-
-        if (previewIconPath) {
-            try {
-                this._previewIcon = new Clutter.Texture({ width: GenericDisplay.PREVIEW_ICON_SIZE, height: GenericDisplay.PREVIEW_ICON_SIZE});
-                this._previewIcon.set_from_file(previewIconPath);
-            } catch (e) {
-                // we can get an error here if the file path doesn't exist on the system
-                log('Error loading AppDisplayItem preview icon ' + e);
-            }
-        }
+    // Returns a preview icon for the item.
+    _createPreviewIcon : function() {
+        return this._appInfo.create_icon_texture(GenericDisplay.PREVIEW_ICON_SIZE);
     }
 };
 
index 02886f7ee067127690cc52e4eba0456aa04ef112..fac319fb513789258cfdec996b51c2c14f6ca3f1 100644 (file)
@@ -62,10 +62,9 @@ DocDisplayItem.prototype = {
         return this._docInfo.createIcon(GenericDisplay.ITEM_DISPLAY_ICON_SIZE);
     },
 
-    // Ensures the preview icon is created.
-    _ensurePreviewIconCreated : function() {
-        if (!this._previewIcon)
-            this._previewIcon = this._docInfo.createIcon(GenericDisplay.PREVIEW_ICON_SIZE);
+    // Returns a preview icon for the item.
+    _createPreviewIcon : function() {
+        return this._docInfo.createIcon(GenericDisplay.PREVIEW_ICON_SIZE);
     },
 
     // Creates and returns a large preview icon, but only if this._docInfo is an image file
index 73a6557cd9e03ca2b73f0969ac8f551ca297078e..3cec3491febea81235133e87b81fc20acbf494df 100644 (file)
@@ -114,7 +114,6 @@ GenericDisplayItem.prototype = {
         this._name = null;
         this._description = null;
         this._icon = null;
-        this._previewIcon = null; 
 
         // An array of details description actors that we create over time for the item.
         // It is used for updating the description text inside the details actor when
@@ -210,12 +209,11 @@ GenericDisplayItem.prototype = {
 
         mainDetails.append(textDetails, Big.BoxPackFlags.EXPAND);
 
-        this._ensurePreviewIconCreated();
+        let previewIcon = this._createPreviewIcon();
         let largePreviewIcon = this._createLargePreviewIcon(availableWidth, Math.max(0, availableHeight - mainDetails.height - PREVIEW_BOX_SPACING));
 
-        if (this._previewIcon != null && largePreviewIcon == null) {
-            let previewIconClone = new Clutter.Clone({ source: this._previewIcon });
-            mainDetails.prepend(previewIconClone, Big.BoxPackFlags.NONE);
+        if (previewIcon != null && largePreviewIcon == null) {
+            mainDetails.prepend(previewIcon, Big.BoxPackFlags.NONE);
         }
 
         details.append(mainDetails, Big.BoxPackFlags.NONE);
@@ -265,11 +263,6 @@ GenericDisplayItem.prototype = {
             // and therefore should be responsible for distroying it
             this._icon.destroy();
             this._icon = null;
-        } 
-        // This ensures we'll create a new previewIcon next time we need it
-        if (this._previewIcon != null) {
-            this._previewIcon.destroy();
-            this._previewIcon = null;
         }
 
         this._icon = this._createIcon();
@@ -320,8 +313,8 @@ GenericDisplayItem.prototype = {
         throw new Error("Not implemented");
     },
 
-    // Ensures the preview icon is created.
-    _ensurePreviewIconCreated: function() {
+    // Returns a preview icon for the item.
+    _createPreviewIcon: function() {
         throw new Error("Not implemented");
     },